package com.scm.service;

import com.scm.common.core.domain.entity.SysUser;
import com.scm.dto.req.inventory.CreateInventoryOutByOrderReq;
import com.scm.dto.req.inventory.SaveScmInventoryInReq;
import com.scm.dto.req.inventory.SaveScmInventoryOutReq;
import com.scm.dto.resp.invent.QueryInventoryInPageResp;
import com.scm.dto.resp.invent.QueryInventoryOutPageResp;
import com.scm.dto.resp.invent.ScmInventoryOutDetailDo;
import com.scm.persist.model.ScmInventoryIn;
import com.scm.persist.model.ScmInventoryInDetail;
import com.scm.persist.model.ScmInventoryOut;
import com.scm.persist.model.ScmInventoryOutDetail;

import java.util.List;

public interface IScmInventoryOutService {


    /**
     * 查询库存-入库信息
     *
     * @param id 库存-入库信息主键
     * @return 库存-入库信息
     */
    public ScmInventoryOut selectScmInventoryOutById(Long id);

    /**
     * 查询库存-入库信息列表
     *
     * @param scmInventoryOut 库存-入库信息
     * @return 库存-入库信息集合
     */
    public QueryInventoryOutPageResp selectScmInventoryOutList(ScmInventoryOut scmInventoryOut, Integer start, Integer size);

    /**
     * 新增库存-入库信息
     *
     * @param inventoryOut 库存-入库信息
     * @return 结果
     */
    public int insertScmInventoryOut(ScmInventoryOut inventoryOut);

    /**
     * 修改库存-入库信息
     *
     * @param inventoryOut 库存-入库信息
     * @return 结果
     */
    public int updateScmInventoryOut(ScmInventoryOut inventoryOut);

    /**
     * 批量删除库存-入库信息
     *
     * @param id 需要删除的库存-入库信息主键集合
     * @return 结果
     */
    public int deleteScmInventoryOutById(String id);

    /**
     * 删除库存-入库信息信息
     *
     * @param id 库存-入库信息主键
     * @return 结果
     */
    public int deleteScmInventoryOutById(Long id);

    public List<ScmInventoryOutDetailDo> selectScmInventoryOutDetailListList(Long inventoryOutId);

    public int saveScmInventoryOut(SaveScmInventoryOutReq req , SysUser sysUser);

    public int updateScmInventoryOut(SaveScmInventoryOutReq req , SysUser sysUser);

    public int confirmScmInventoryOut(Long inventoryOutId , SysUser sysUser);

    public int createScmInventoryOutByOrder(SysUser sysUser, CreateInventoryOutByOrderReq req);



}
